import React, { useRef, useState, useEffect } from "react";

//使用自定义hooks实现60s倒计时功能
//自定义hooks的命名规则:以use开头,后面跟上自定义hooks的功能
//initTime 初始时间,默认为60s
const useCountDown = (initTime = 60) => {
  //定义定时器的句柄
  const timer = useRef(null);
  //定义倒计时状态
  const [countDown, setCountDown] = useState(initTime);
  //定义一个状态表示是否正在倒计时
  const [isRuning, setIsRunning] = useState(false);

  //定义开始倒计时的方法
  const startCountDown = () => {
    //判断是否正在倒计时
    if (!isRuning) {
      setIsRunning(true); //修改状态为正在倒计时
      //开始倒计时
      timer.current = setInterval(() => {
        //修改倒计时时间
        setCountDown((pre) => {
          //如果倒计时时间小于等于0,则清除定时器
          if (pre < 1) {
            clearInterval(timer.current);
            setIsRunning(false);
            return initTime;
          }

          return pre - 1;
        });
      }, 1000);
    }
  };

  //组件卸载时清除定时器
  useEffect(() => {
    return () => {
      if (timer.current) {
        clearInterval(timer.current);
      }
    };
  }, []);

  return { countDown, isRuning, startCountDown };
};

//抛出
export default useCountDown;
